package com.itheima.d2_collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

/**
    目标：掌握Collection集合的常用API.
    Collection是集合的祖宗类，它的功能是全部集合都可以继承使用的，所以要学习它。
    Collection API如下:
         - public boolean add(E e)：  把给定的对象添加到当前集合中 。
         - public void clear() :清空集合中所有的元素。
         - public boolean remove(E e): 把给定的对象在当前集合中删除。
         - public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。
         - public boolean isEmpty(): 判断当前集合是否为空。
         - public int size(): 返回集合中元素的个数。
         - public Object[] toArray(): 把集合中的元素，存储到数组中。
 */
public class CollectionTest2API {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>(); // 多态写法

        // 1.public boolean add(E e)：添加元素, 添加成功返回true。
        c.add("梁晓迪");
        c.add("唐智鸿");
        c.add("凌邦乐");
        c.add("冯志明");
        c.add("陈青青");
        System.out.println("c = " + c);

        // 2.public void clear()：清空集合的元素。
        //c.clear();
        //System.out.println("c = " + c);

        // 3.public boolean isEmpty()：判断集合是否为空 是空返回true,反之。
        System.out.println("c.isEmpty() = " + c.isEmpty());

        // 4.public int size()：获取集合的大小。
        System.out.println("c.size() = " + c.size());

        // 5.public boolean contains(Object obj)：判断集合中是否包含某个元素。
        System.out.println("c.contains(\"首长\") = " + c.contains("首长"));
        System.out.println("c.contains(\"梁晓迪\") = " + c.contains("梁晓迪"));

        // 6.public boolean remove(E e)：删除某个元素:如果有多个重复元素默认删除前面的第一个！
        System.out.println("c.remove(\"梁晓迪\") = " + c.remove("梁晓迪"));
        System.out.println("c = " + c);

        // 7.public Object[] toArray()：把集合转换成数组
        Object[] objects = c.toArray();
        System.out.println(Arrays.toString(objects));

        // <T> T[] toArray(T[] a) 把集合变成指定类型的数组
        String[] names = new String[c.size()];//使用集合的size来当做数组的长度。
        String[] names2 = c.toArray(names);
        //传入一个指定类型的数组，若数组长度够长，那么集合的数据会直接放到数组中。如果不够长会产生一个新数组存放数据
        System.out.println("names = " + names);
        System.out.println("names2 = " + names2);
        System.out.println("Arrays.toString(names2) = " + Arrays.toString(names2));

        System.out.println("--------------------------------------------");
        // 8.boolean addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此 collection 中（可选操作）。
        // 把一个集合的全部数据倒入到另一个集合中去。
        ArrayList<String> names3 = new ArrayList<>();
        names3.add("Mike");
        names3.add("Jake");
        names3.add("Rose");


        boolean result = c.addAll(names3);
        System.out.println("result = " + result);
        System.out.println("c = " + c);


    }
}
